MYSQL de IN operator
Home

MYSQL de IN operator

MYSQL de IN operator

Met de IN operator kan ke zoeken in een lijst van opgegeven waarden.

Probleem

In plaats van een lange of expressie te maken kan je gewoon een lijst van geldige waarden opgeven.

Oplossing

Met IN voorwaarde syntaxis bestaat uit een statement gevolgd door het sleutelwoord IN, gevolgd door een lijst van waarden ingesloten in ronde haakjes.

Om de boeken geschreven door De Roover en Kaye te selecteren:

use JefInghelbrecht;
select Familienaam, Titel, Verschijningsdatum
   from Boeken
   where Familienaam IN ('De Roover', 'Kaye');

De IN operator is een afkorting voor een OR reeks.

Je kan de IN operator combineren met logische operatoren.

Als je alle boeken wilt die niet van De Roover of Kaye zijn:

use JefInghelbrecht;

select Familienaam, Titel, Verschijningsdatum
   from Boeken
   where Familienaam not in ('De Roover', 'Kaye')

Bart zegt dat het niet hoofdletter gevoelig is!

Nog voorbeelden:

-- 11 december 2012
--EV
-- in operator
use A88586EllyVerbraeken;
select Familienaam,Titel,Verschijningsdatum from Boeken
   where Familienaam in ('Beth','Bly')

Je kan meerdere IN operatoren combineren in complexe logische expressies. Je wilt alle boeken die niet zijn geschreven door De Roover of Kaye en die zijn verschenen in 2000 of 2001:

Oefening

-- 11 december 2012
-- JI
-- in operator
-- bestandsnaam: BoekenSelectInComplex.sql
--

select Familienaam, Titel, Verschijningsdatum
   from Boeken
   where (Familienaam not in ('De Roover', 'Kaye'))
     and (Verschijningsdatum in ('2000', '2001'));

De ronde haakjes moeten er niet bij. Ze maken alleen de expressie duidelijker. Het is een goede praktijk ze er altijd bij te plaatsen.

Opdracht

  1. Alle boeken die niet zijn geschreven door een auteur waarvan de familienaam begint met een d, k of r en die gepubliceerd zijn in de jaren zeventig en twintig van de vorige eeuw.
  2. Alle boeken geschreven door de auteurs waarvan de familienaam begint met een d, k of r en die een boek gepubliceerd hebben in het tweede jaar van elk decennium van de vorige eeuw.
  3. Sla de scripts op in een bestand met de naam BoekenSelectComplexOpdracht.sql.

Opmerking

De wildcards kan je enkel gebruiken in de LIKE clausule en niet in de IN. De volgende SELECT retourneert niets alhoewel er boeken uit de jaren 80 en 40 uit de vorige eeuw in de tabel Boeken zitten:

select Titel, Verschijningsjaar from Boeken
   where Verschijningsjaar in ('198_', '194_');

De underscores worden hier letterlijk opgevat en er zitten geen boeken van het jaar 198_ in de tabel.

JI
2018-03-21 00:59:02